Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / rnstatus_handler.py

Displaying Raw • Download


meshchatx/src/backend/rnstatus_handler.py 93974edf3f77e2de3301e3e9295a7bece80d89cc (93974edf) Text, 8.64 KB

Tff7b72import T7ee787time
Tff7b72from T7ee787typing Tff7b72import Te6edf3Any

Tff7b72import T7ee787RNS


Tff7b72def Td2a8ffsize_strTb4b4b4(Te6edf3numTb4b4b4, Te6edf3suffixTff7b72=Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffKTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffMTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffGTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffPTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffETa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff"Ta5d6ffYTa5d6ff"

Tff7b72if Te6edf3suffix Tff7b72== Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4:
Te6edf3num Tff7b72*Tff7b72= T79c0ff8
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffKTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffMTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffGTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffPTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffETa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffZTa5d6ff"Tb4b4b4]
Te6edf3last_unit Tff7b72= Ta5d6ff"Ta5d6ffYTa5d6ff"

Tff7b72for Te6edf3unit Tff7b72in Te6edf3unitsTb4b4b4:
Tff7b72if Tffa657absTb4b4b4(Te6edf3numTb4b4b4) Tff7b72< T79c0ff1000.0Tb4b4b4:
Tff7b72if Te6edf3unit Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3numTffd700:Ta5d6ff.0fTffd700}Ta5d6ff Tffd700{Te6edf3unitTffd700}Tffd700{Te6edf3suffixTffd700}Ta5d6ff"
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3numTffd700:Ta5d6ff.2fTffd700}Ta5d6ff Tffd700{Te6edf3unitTffd700}Tffd700{Te6edf3suffixTffd700}Ta5d6ff"
Te6edf3num Tff7b72/Tff7b72= T79c0ff1000.0

Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3numTffd700:Ta5d6ff.2fTffd700}Tffd700{Te6edf3last_unitTffd700}Tffd700{Te6edf3suffixTffd700}Ta5d6ff"


Tff7b72class T56d364RNStatusHandlerTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3reticulum_instanceTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreticulum Tff7b72= Te6edf3reticulum_instance

Tff7b72def Td2a8ffget_statusTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3include_link_statsTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4,
Te6edf3sortingTb4b4b4: Tffa657str Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4,
Te6edf3sort_reverseTb4b4b4: Tffa657bool Tff7b72= Tff7b72FalseTb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3stats Tff7b72= Tff7b72None
Te6edf3link_count Tff7b72= Tff7b72None

Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3include_link_statsTb4b4b4:
Te6edf3link_count Tff7b72= Tff7b72selfTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffget_link_countTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
T8b949e# We can't do much here if the reticulum instance fails
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffFailed to get link count: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72tryTb4b4b4:
Te6edf3stats Tff7b72= Tff7b72selfTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffget_interface_statsTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
T8b949e# We can't do much here if the reticulum instance fails
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffFailed to get interface stats: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72if Te6edf3stats Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fflink_countTa5d6ff"Tb4b4b4: Te6edf3link_countTb4b4b4,
Tb4b4b4}

Te6edf3blackhole_enabled Tff7b72= Tff7b72False
Te6edf3blackhole_sources Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3blackhole_count Tff7b72= T79c0ff0
Tff7b72tryTb4b4b4:
Te6edf3blackhole_enabled Tff7b72= Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffpublish_blackhole_enabledTb4b4b4(Tb4b4b4)
Te6edf3blackhole_sources Tff7b72= Tb4b4b4[Te6edf3sTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3s Tff7b72in Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffblackhole_sourcesTb4b4b4(Tb4b4b4)Tb4b4b4]

T8b949e# Get count of blackholed identities
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreticulum Tff7b72and Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffreticulumTb4b4b4, Ta5d6ff"Ta5d6ffget_blackholed_identitiesTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3blackhole_count Tff7b72= Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffget_blackholed_identitiesTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72except Tf85149ExceptionTb4b4b4:
Tff7b72pass

Te6edf3interfaces Tff7b72= Te6edf3statsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3sorting Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3sortingTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3sorting Tff7b72= Te6edf3sortingTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3sorting Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ffrateTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6ffrxTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6fftxTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6ffrxsTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxsTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6fftxsTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxsTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6fftrafficTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Tb4b4b4(Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4) Tff7b72+ Tb4b4b4(Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4)Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ffannouncesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffannounceTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Tb4b4b4(Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffincoming_announce_frequencyTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4)
Tff7b72+ Tb4b4b4(Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffoutgoing_announce_frequencyTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4)Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6ffarxTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffincoming_announce_frequencyTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6ffatxTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffoutgoing_announce_frequencyTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)
Tff7b72elif Te6edf3sorting Tff7b72== Ta5d6ff"Ta5d6ffheldTa5d6ff"Tb4b4b4:
Te6edf3interfacesTff7b72.Td2a8ffsortTb4b4b4(
Te6edf3keyTff7b72=Tff7b72lambda Te6edf3iTb4b4b4: Te6edf3iTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffheld_announcesTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4,
Te6edf3reverseTff7b72=Te6edf3sort_reverseTb4b4b4,
Tb4b4b4)

Te6edf3formatted_interfaces Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3ifstat Tff7b72in Te6edf3interfacesTb4b4b4:
Te6edf3name Tff7b72= Te6edf3ifstatTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)

Tff7b72if Tb4b4b4(
Te6edf3nameTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffLocalInterface[Ta5d6ff"Tb4b4b4)
Tff7b72or Te6edf3nameTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffTCPInterface[ClientTa5d6ff"Tb4b4b4)
Tff7b72or Te6edf3nameTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffBackboneInterface[Client onTa5d6ff"Tb4b4b4)
Tb4b4b4)Tb4b4b4:
Tff7b72continue

Te6edf3formatted_ifTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Te6edf3nameTb4b4b4,
Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffUpTa5d6ff" Tff7b72if Te6edf3ifstatTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4) Tff7b72else Ta5d6ff"Ta5d6ffDownTa5d6ff"Tb4b4b4,
Tb4b4b4}

Te6edf3mode Tff7b72= Te6edf3ifstatTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3mode Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffAccess PointTa5d6ff"
Tff7b72elif Te6edf3mode Tff7b72== T79c0ff2Tb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffPoint-to-PointTa5d6ff"
Tff7b72elif Te6edf3mode Tff7b72== T79c0ff3Tb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffRoamingTa5d6ff"
Tff7b72elif Te6edf3mode Tff7b72== T79c0ff4Tb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffBoundaryTa5d6ff"
Tff7b72elif Te6edf3mode Tff7b72== T79c0ff5Tb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffGatewayTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6ff"Ta5d6ffFullTa5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffbitrateTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3size_strTb4b4b4(Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ffpsTa5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffrxbTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffrx_bytesTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4]
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffrx_bytes_strTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3size_strTb4b4b4(Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6fftxbTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6fftx_bytesTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4]
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6fftx_bytes_strTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3size_strTb4b4b4(Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffrxsTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffrx_packetsTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffrxsTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6fftxsTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6fftx_packetsTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6fftxsTa5d6ff"Tb4b4b4]

Tff7b72if Ta5d6ff"Ta5d6ffclientsTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffclientsTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffclientsTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffclientsTa5d6ff"Tb4b4b4]

Tff7b72if Ta5d6ff"Ta5d6ffnoise_floorTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffnoise_floorTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffnoise_floorTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3ifstatTb4b4b4[Ta5d6ff'Ta5d6ffnoise_floorTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff dBmTa5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffinterferenceTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffinterferenceTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffinterferenceTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3ifstatTb4b4b4[Ta5d6ff'Ta5d6ffinterferenceTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff dBmTa5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffcpu_loadTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffcpu_loadTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffcpu_loadTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3ifstatTb4b4b4[Ta5d6ff'Ta5d6ffcpu_loadTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff%Ta5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffcpu_tempTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffcpu_tempTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffcpu_tempTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3ifstatTb4b4b4[Ta5d6ff'Ta5d6ffcpu_tempTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff°CTa5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffmem_loadTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffmem_loadTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffmem_loadTa5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3ifstatTb4b4b4[Ta5d6ff'Ta5d6ffmem_loadTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff%Ta5d6ff"

Tff7b72if Ta5d6ff"Ta5d6ffbattery_percentTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffbattery_percentTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffbattery_percentTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffbattery_percentTa5d6ff"Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffbattery_stateTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffbattery_stateTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffbattery_stateTa5d6ff"Tb4b4b4]

Tff7b72if Ta5d6ff"Ta5d6ffairtime_shortTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Ta5d6ff"Ta5d6ffairtime_longTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffairtimeTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffshortTa5d6ff"Tb4b4b4: Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffairtime_shortTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fflongTa5d6ff"Tb4b4b4: Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffairtime_longTa5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4}

Tff7b72if Ta5d6ff"Ta5d6ffchannel_load_shortTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Ta5d6ff"Ta5d6ffchannel_load_longTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffchannel_loadTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffshortTa5d6ff"Tb4b4b4: Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffchannel_load_shortTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fflongTa5d6ff"Tb4b4b4: Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffchannel_load_longTa5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4}

Tff7b72if Ta5d6ff"Ta5d6ffpeersTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4]

Tff7b72if Ta5d6ff"Ta5d6ffincoming_announce_frequencyTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffincoming_announce_frequencyTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[
Ta5d6ff"Ta5d6ffincoming_announce_frequencyTa5d6ff"
Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffoutgoing_announce_frequencyTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffoutgoing_announce_frequencyTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[
Ta5d6ff"Ta5d6ffoutgoing_announce_frequencyTa5d6ff"
Tb4b4b4]
Tff7b72if Ta5d6ff"Ta5d6ffheld_announcesTa5d6ff" Tff7b72in Te6edf3ifstatTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffheld_announcesTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffheld_announcesTa5d6ff"Tb4b4b4]

Tff7b72if Ta5d6ff"Ta5d6ffifac_netnameTa5d6ff" Tff7b72in Te6edf3ifstat Tff7b72and Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffifac_netnameTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3formatted_ifTb4b4b4[Ta5d6ff"Ta5d6ffnetwork_nameTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3ifstatTb4b4b4[Ta5d6ff"Ta5d6ffifac_netnameTa5d6ff"Tb4b4b4]

Te6edf3formatted_interfacesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3formatted_ifTb4b4b4)

Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4: Te6edf3formatted_interfacesTb4b4b4,
Ta5d6ff"Ta5d6fflink_countTa5d6ff"Tb4b4b4: Te6edf3link_countTb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffblackhole_enabledTa5d6ff"Tb4b4b4: Te6edf3blackhole_enabledTb4b4b4,
Ta5d6ff"Ta5d6ffblackhole_sourcesTa5d6ff"Tb4b4b4: Te6edf3blackhole_sourcesTb4b4b4,
Ta5d6ff"Ta5d6ffblackhole_countTa5d6ff"Tb4b4b4: Te6edf3blackhole_countTb4b4b4,
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────